package com.gqh.weather.domain.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 学科枚举
 */
@Getter
@AllArgsConstructor
public enum XuekeEnum {

    /**
     * 全部
     */
    ALL(0, "全部", "2"),

    /**
     * 思想品德
     */
    MORAL(100, "思想品德", "1"),

    /**
     * 视力
     */
    VISION(101, "视力", "3"),

    /**
     * 体重指数（BMI）
     */
    BMI(102, "体重指数（BMI）", "3"),

    /**
     * 身高
     */
    HEIGHT(103, "身高", "3"),

    /**
     * 体重
     */
    WEIGHT(104, "体重", "3"),

    /**
     * 肺活量
     */
    VITAL_CAPACITY(105, "肺活量", "3"),

    /**
     * 50米跑
     */
    RUN_50M(106, "50米跑", "3"),

    /**
     * 50米×8往返跑
     */
    RUN_50M_X8(107, "50米×8往返跑", "3"),

    /**
     * 1000米/800米跑
     */
    RUN_1000M_800M(108, "1000米/800米跑", "3"),

    /**
     * 坐位体前屈
     */
    SIT_REACH(109, "坐位体前屈", "3"),

    /**
     * 立定跳远
     */
    LONG_JUMP(110, "立定跳远", "3"),

    /**
     * 引体向上
     */
    PULL_UP(111, "引体向上", "3"),

    /**
     * 1分钟跳绳
     */
    ROPE_SKIP_1MIN(112, "1分钟跳绳", "3"),

    /**
     * 1分钟仰卧起坐
     */
    SIT_UP_1MIN(113, "1分钟仰卧起坐", "3"),

    /**
     * 语文
     */
    CHINESE(200, "语文", "2"),

    /**
     * 数学
     */
    MATH(201, "数学", "2"),

    /**
     * 英语
     */
    ENGLISH(202, "英语", "2"),

    /**
     * 科学
     */
    SCIENCE(203, "科学", "2"),

    /**
     * 道德与法制
     */
    MORAL_LAW(204, "道德与法制", "2"),

    /**
     * 心理健康
     */
    MENTAL_HEALTH(400, "心理健康", "4"),

    /**
     * 音乐
     */
    MUSIC(500, "音乐", "5"),

    /**
     * 美术
     */
    ART(501, "美术", "5");

    /**
     * 学科值
     */
    private final Integer value;

    /**
     * 学科名称
     */
    private final String description;

    /**
     * 父分类ID
     */
    private final String pid;

    /**
     * 根据值获取枚举
     *
     * @param value 学科值
     * @return 学科枚举
     */
    public static XuekeEnum fromValue(Integer value) {
        if (value == null) {
            return null;
        }
        for (XuekeEnum item : values()) {
            if (item.getValue().equals(value)) {
                return item;
            }
        }
        return null;
    }

    /**
     * 验证学科值是否有效
     *
     * @param value 学科值
     * @return 是否有效
     */
    public static boolean isValid(Integer value) {
        return fromValue(value) != null;
    }

    /**
     * 获取学科描述
     *
     * @param value 学科值
     * @return 学科描述
     */
    public static String getDescription(Integer value) {
        XuekeEnum item = fromValue(value);
        return item != null ? item.getDescription() : "未知学科";
    }
}
